import request from '@/utils/request'

/**
 * 获取物资列表
 * @param {Object} params - 查询参数
 * @param {string} [params.keyword] - 搜索关键词
 * @param {number} [params.category] - 物资分类ID
 * @param {string} [params.sort] - 排序方式，例如：'price:asc', 'createTime:desc'
 * @param {number} [params.page=1] - 当前页码
 * @param {number} [params.pageSize=10] - 每页条数
 * @returns {Promise} 返回响应结果
 */
export function getMaterials(params) {
  return request({
    url: '/api/materials',
    method: 'get',
    params
  })
}

/**
 * 获取物资详情
 * @param {number|string} id - 物资ID
 * @returns {Promise} 返回响应结果
 */
export function getMaterialDetail(id) {
  return request({
    url: `/api/materials/${id}`,
    method: 'get'
  })
}

/**
 * 获取物资分类列表
 * @returns {Promise} 返回响应结果
 */
export function getMaterialCategories() {
  return request({
    url: '/api/materials/categories',
    method: 'get'
  })
}

/**
 * 申请物资
 * @param {Object} data - 申请数据
 * @param {number|string} data.materialId - 物资ID
 * @param {number} data.quantity - 申请数量
 * @param {string} data.reason - 申请理由
 * @param {string} data.department - 申请部门
 * @returns {Promise} 返回响应结果
 */
export function applyMaterial(data) {
  return request({
    url: '/api/materials/apply',
    method: 'post',
    data
  })
}

/**
 * 收藏/取消收藏物资
 * @param {number|string} id - 物资ID
 * @param {boolean} isFavorite - 是否收藏
 * @returns {Promise} 返回响应结果
 */
export function toggleFavoriteMaterial(id, isFavorite) {
  return request({
    url: `/api/materials/${id}/favorite`,
    method: 'put',
    data: { isFavorite }
  })
}

/**
 * 获取相关物资
 * @param {number|string} id - 物资ID
 * @param {number} [limit=4] - 获取条数
 * @returns {Promise} 返回响应结果
 */
export function getRelatedMaterials(id, limit = 4) {
  return request({
    url: `/api/materials/${id}/related`,
    method: 'get',
    params: { limit }
  })
}

/**
 * 获取物资申请记录
 * @param {number|string} id - 物资ID
 * @param {Object} [params] - 查询参数
 * @param {number} [params.page=1] - 当前页码
 * @param {number} [params.pageSize=10] - 每页条数
 * @returns {Promise} 返回响应结果
 */
export function getMaterialApplyRecords(id, params) {
  return request({
    url: `/api/materials/${id}/apply-records`,
    method: 'get',
    params
  })
}

/**
 * 获取收藏物资列表
 * @param {Object} [params] - 查询参数
 * @param {number} [params.page=1] - 当前页码
 * @param {number} [params.pageSize=10] - 每页条数
 * @returns {Promise} 返回响应结果
 */
export function getFavoriteMaterials(params) {
  return request({
    url: '/api/materials/favorites',
    method: 'get',
    params
  })
}

/**
 * 上传物资图片
 * @param {FormData} formData - 包含图片的表单数据
 * @returns {Promise} 返回响应结果
 */
export function uploadMaterialImage(formData) {
  return request({
    url: '/api/materials/images/upload',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 添加物资
 * @param {Object} data - 物资数据
 * @returns {Promise} 返回响应结果
 */
export function addMaterial(data) {
  return request({
    url: '/api/materials',
    method: 'post',
    data
  })
}

/**
 * 更新物资信息
 * @param {number|string} id - 物资ID
 * @param {Object} data - 物资数据
 * @returns {Promise} 返回响应结果
 */
export function updateMaterial(id, data) {
  return request({
    url: `/api/materials/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除物资
 * @param {number|string} id - 物资ID
 * @returns {Promise} 返回响应结果
 */
export function deleteMaterial(id) {
  return request({
    url: `/api/materials/${id}`,
    method: 'delete'
  })
}

/**
 * 导入物资数据
 * @param {FormData} formData - 包含Excel文件的表单数据
 * @returns {Promise} 返回响应结果
 */
export function importMaterials(formData) {
  return request({
    url: '/api/materials/import',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 导出物资数据
 * @param {Object} [params] - 查询参数，用于筛选导出的数据
 * @returns {Promise} 返回响应结果
 */
export function exportMaterials(params) {
  return request({
    url: '/api/materials/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
} 